11 - SP 2 / Kapitel 12-1 Fortsetzung + Meltdown [ID:8727]
50 von 553 angezeigt

연소

Schönen guten Morgen, meine Damen und Herren elloschen als erstes

mal alles Gute fürs neue Jahr und ich hatte ja in der letzten Vorlesung

im Dezember, wenn ich hier mit diesem ein Kapitel nicht ganz fertig geworden

hatte mir dann gedacht naja gut, es sind ja nur noch ein paar kleine Aspekte,

was ebenso grad diese Benutzung von Adressräumen zwischen mehreren

Prozessen bedeutet, vor allem auch das Sharing zwischen Betriebssystemadressraum und Benutzeradressraum,

worüber ich hier schon etliche Male gesprochen habe.

Sie erinnern sich hier so an meine Bildchen immer, am Adressraum.

Ja und da haben wir also irgendwie hier unten ja Textsegment und Daten und irgendwo da oben noch ein Stack.

Und dann hier irgendwo im ganz oberen Bereich das Betriebssystem, das normalerweise ja eben nicht zugreifbar ist.

Und eben im Rahmen von einem Systemcall springt ja, ein Systemcall springt einfach da oben rein,

da oben gibt es natürlich dann auch ein Textsegmentbereich und dann springt der Systemcall einfach da hoch.

Und im Rahmen von diesem Sprung, der im Rahmen von einem Trepp passiert, wird im Programm Statuswort das Privilege, das Privilegebit gesetzt.

Es ist Supervisor Mode eingeschaltet und der Speicherbereich hier ist eben über die Pagetable so eingestellt, dass er eben nur im Supervisor Mode erreichbar ist.

Erzähle ich auch gleich nochmal, gut wenn Sie Presse verfolgt haben oder sowas, in den letzten Tagen hat genau diese Konstellation ja doch erhebliche Popularität gewonnen,

beziehungsweise sagen wir Aufmerksamkeit gewonnen und seit ja relativ kurzer Zeit ist es zumindest im normalen Linux System so nicht mehr und da ich denke es ist natürlich,

wenn wir jetzt gerade darüber sprechen, sicherlich angebracht, dass ich heute noch ein bisschen was über Meltdown erzähle und wie das da reinpasst und ich denke mit dem ganzen Kontext,

den wir hier aufgebaut haben, ist es eigentlich auch relativ einfach zu verstehen, was da abgeht, wobei ich sagen muss, ich finde es hochinteressant, was da rausgefunden wurde

und ich finde es auch ganz interessant, wenn man so die Zeitungsartikel liest, wie sich so manche Redakteure einen abbrechen, diesen ganzen Kontext irgendwo allgemeinverständlich darstellen zu wollen,

weil ich denke ohne eine ganze Menge Hintergrundwissen kann man das eigentlich nicht so nützlich erklären, aber gut.

So und eng damit zusammenhängt natürlich auch noch eine andere Geschichte, die ich so ganz am Schluss vom letzten Mal auch relativ flott eigentlich noch erzählt hatte,

dieser Translation Looker-Side-Buffer, den Wosh also Übersetzungsprover nennt, wir haben ja das grundlegende Problem, dass wir ja bei jeder Adressumsetzung im Prinzip,

jetzt gehen wir mal von einem Seitenadressierten Adressraum aus, also Seitenadressierten logischen oder virtuellen Adressraum aus,

dann müssen wir ja eigentlich mit jeder virtuellen Adresse anhand von der Page Table eine Umsetzung auf die physikalische Adresse machen.

Und die Page Table liegt natürlich auch im Speicher und wenn wir dann natürlich jedes Mal in den Speicher reingucken müssen, dann bedeutet jeder Speicherzugriff im Prinzip nochmal einen weiteren Zugriff auf die Page Table,

also quasi zwei Speicherzugriffe und das ist natürlich nicht machbar eigentlich, also von der Geschwindigkeit her.

Und deswegen um überhaupt natürlich die Geschwindigkeit von Speicherzugriffen zu erhöhen gibt es ja die Caches, die gibt es für die normalen Daten,

diese Caches gibt es eben auch für die Page Table letztendlich und das ist im Prinzip genau das, was der Translation Looker-Side-Buffer ist, es ist letztendlich ein Cache für die Page Table.

Und er ist insofern ein bisschen anderer Cache als normale Caches, also dieser TLB ist ein Assoziativspeicher und was ich im Endeffekt mache ist,

dass ich quasi hier mit der logischen Adresse reingehe oder sagen wir mal mit der Seitennummer reingehe und hier kommt im Endeffekt, also logisch,

und hier unten an den Pins kommt letztendlich die physikalische Anfangsadresse des Seitenrahmens raus,

sodass man im Endeffekt, wenn wir eine logische Adresse haben, dann besteht die ja irgendwie aus der Seitennummer und einem Offset

und im Endeffekt genau damit geht man jetzt eben nicht in die Page Table rein, sondern man legt die Seitennummer erstmal am TLB an

und wenn die Abbildung im TLB drin ist, dann haben Sie im Prinzip innerhalb von, gut es wird nicht innerhalb von einem Takt sein,

aber innerhalb von ganz wenigen Prozessorzyklen liegt hier die physikalische Adresse an und die können Sie jetzt dann ja nehmen

und das heißt man nimmt also die hier plus die hier und damit haben Sie die echte physikalische Adresse.

Und nur wenn das hier nicht funktioniert, dann haben Sie einen TLB miss und dann gibt es zwei unterschiedliche Möglichkeiten,

also entweder dann gibt es einen Trap und das Betriebssystem muss sich darum kümmern, dass da irgendwie das Zeug aus der Page Table geholt wird

und da reingeladen wird, das ist eine Möglichkeit, die Prozessoren die machen das so oder ist es auch das, das bereits ein Hardware realisiert,

das heißt der TLB selber kümmert sich drum, das heißt der weiß einfach wo die Page Table liegt, kennt den Aufbau der Page Table,

die müssen natürlich dann passend zur Architektur gebaut sein, das ist natürlich klar und der TLB kümmert sich dann selber drum,

dass er den entsprechenden Eintrag holt. So, nachdem das hier ein Assoziativspeicher ist, weiß nicht wie sehr das in der Rechnerarchitektur schon rankam,

wie die aufgebaut sind, ich will es einfach ganz platt mal so ausdrücken, Assoziativspeicher sind von der Hardware-Verdrahtung her extrem komplexe Konstrukte,

das heißt die können Sie nicht beliebig groß machen und typischerweise hat so ein TLB, also wenn er richtig groß ist, hat er vielleicht 128 Einträge,

häufig sogar weniger, nur 64 oder so oder noch weniger, das heißt das reicht aber natürlich für das normale Working Set von dem Prozess,

also der reicht ja ein Eintrag pro Page, also für 4 Kilo Byte typischerweise, das heißt für das normale Working Set, auf dem so ein Prozess rumtornet,

reicht Ihnen das eigentlich ganz gut, sodass eigentlich die normalen Adressumsetzungen immer mit dem TLB funktionieren und ein Problem haben Sie natürlich,

wenn Sie einen Prozess haben, der über sehr große Adressbereiche drüber läuft, eventuell auch ein Problem haben Sie also gerade auch, wenn das ganze Multi-Squad abläuft,

wenn Sie zwischen Threads umschalten, zumindest auf einem Prozessor Kern, wenn Sie zwischen den Threads umschalten, wenn die also nicht echt parallel laufen auf verschiedenen Prozessor Kern,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:23:28 Min

Aufnahmedatum

2018-01-11

Hochgeladen am

2018-01-12 22:45:28

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen